home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import java.util.Enumeration;
-
- public class XDRWriter$ElemProxy extends XDRWriter.DeclProxy {
- // $FF: synthetic field
- final XDRWriter this$0;
- ElementDeclaration decl;
- XDRWriter.AttrProxy attrProxy;
-
- XDRWriter$ElemProxy(XDRWriter var1) {
- super(var1);
- this.this$0 = var1;
- this.attrProxy = new XDRWriter.AttrProxy(this.this$0);
- }
-
- XDRWriter$ElemProxy(XDRWriter var1, ElementDeclaration var2) {
- super(var1);
- this.this$0 = var1;
- this.attrProxy = new XDRWriter.AttrProxy(this.this$0);
- this.setDecl(var2);
- }
-
- void setDecl(ElementDeclaration var1) {
- this.decl = var1;
- super.setDecl(var1);
- }
-
- void writeCPMetaProps(SXE var1, String var2) {
- Enumeration var3 = this.decl.getCPMetaProps(var2);
-
- while(var3 != null && var3.hasMoreElements()) {
- String var4 = (String)var3.nextElement();
- String var5 = (String)this.decl.getCPMetaProp(var2, var4);
- var1.writeLineBreak();
- var1.writeAttr(var4, var5);
- }
-
- }
-
- public void write(SXE var1, boolean var2) {
- var1.writeElem("ElementType");
- var1.writeAttr("name", this.decl.getName());
- this.this$0.writeMetaProps(var1, this.decl.getMetaPropHash(), (BaseDeclaration)null);
- ContentModel var3 = this.decl.getEffectiveModel();
- this.writeModelAttrs(var1, var3);
- if (var2) {
- ((XDRWriter.DeclProxy)this).writeComments(var1);
- }
-
- this.this$0.writeMetaPropSubelements(var1, this.decl.getMetaPropHash());
- Enumeration var4 = this.decl.getAttributes(true);
-
- while(var4.hasMoreElements()) {
- AttributeGroupMember var5 = (AttributeGroupMember)var4.nextElement();
- this.attrProxy.setDecl((AttributeDeclaration)var5);
- this.attrProxy.writeType(var1, var2);
- }
-
- Enumeration var9 = this.decl.getAttributes(true);
-
- while(var9.hasMoreElements()) {
- AttributeGroupMember var6 = (AttributeGroupMember)var9.nextElement();
- this.attrProxy.setDecl((AttributeDeclaration)var6);
- this.attrProxy.writeRef(var1, false);
- }
-
- if (var3.isTagsOnly()) {
- Object var10 = var3.getRootGroup();
- if (var10 == null) {
- var10 = var3;
- }
-
- this.writeModel(var1, (ContentModelTerm)var10, var10 == var3 || this.omitTopGroup((ContentModelTerm)var10));
- } else if (var3.isMixed()) {
- ContentModelTermEnum var11 = ((ContentModelTerm)var3).getLeafTerms();
-
- while(var11.hasMoreElements()) {
- ContentModelTerm var7 = var11.nextContentModelTerm();
- CMTReferent var8 = var7.getReferent();
- if (var8 instanceof ElementDeclaration) {
- var1.writeElem("element", true);
- var1.writeAttr("type", this.this$0.getQName(var7.getTerm(), Class.forName("com.extensibility.xml.ElementDeclaration")));
- this.writeCPMetaProps(var1, var7.getTerm());
- }
- }
- }
-
- var1.flush("ElementType");
- }
-
- String getMinOccurs(ContentModelTerm var1) {
- char var2 = var1.getOccurance();
- if (var2 == 0) {
- return "1";
- } else if (var2 == '?') {
- return "0";
- } else if (var2 == '+') {
- return "1";
- } else if (var2 == '*') {
- return "0";
- } else {
- throw new IllegalArgumentException(String.valueOf("Unknown occurance: ").concat(String.valueOf(var2)));
- }
- }
-
- String getMaxOccurs(ContentModelTerm var1) {
- char var2 = var1.getOccurance();
- if (var2 == 0) {
- return "1";
- } else if (var2 == '?') {
- return "1";
- } else if (var2 == '+') {
- return "*";
- } else if (var2 == '*') {
- return "*";
- } else {
- throw new IllegalArgumentException(String.valueOf("Unknown occurance: ").concat(String.valueOf(var2)));
- }
- }
-
- private boolean omitTopGroup(ContentModelTerm var1) {
- return var1.getOccurance() == 0 || var1.getOccurance() == '*' && var1.getChildConnection() == '|';
- }
-
- void writeModelAttrs(SXE var1, ContentModel var2) {
- if (var2.isAny()) {
- var1.writeAttr("content", "mixed");
- var1.writeAttr("model", "open");
- } else {
- if (var2.isEmpty()) {
- var1.writeAttr("content", "empty");
- } else if (var2.isTextOnly()) {
- var1.writeAttr("content", "textOnly");
- ((XDRWriter.DeclProxy)this).writeDataType(var1, this.decl.getDataType());
- } else if (var2.isTagsOnly()) {
- var1.writeAttr("content", "eltOnly");
- Object var3 = var2.getRootGroup();
- if (var3 == null) {
- var3 = var2;
- }
-
- if (var3 == var2 || this.omitTopGroup((ContentModelTerm)var3)) {
- boolean var4 = ((ContentModelTerm)var3).getChildConnection() == '|' && ((ContentModelTerm)var3).getOccurance() == '*';
- var1.writeAttr("order", ((ContentModelTerm)var3).getChildConnection() == ',' ? "seq" : (var4 ? "many" : "one"));
- if (!var4 && ((ContentModelTerm)var3).getOccurance() != 0) {
- var1.writeAttr("minOccurs", this.getMinOccurs((ContentModelTerm)var3));
- var1.writeAttr("maxOccurs", this.getMaxOccurs((ContentModelTerm)var3));
- }
- }
- } else if (var2.isMixed()) {
- var1.writeAttr("content", "mixed");
- var1.writeAttr("order", "many");
- }
-
- if (!var2.isOpen()) {
- var1.writeAttr("model", "closed");
- }
-
- }
- }
-
- void writeModel(SXE var1, ContentModelTerm var2, boolean var3) {
- if (var2.isGroup()) {
- if (!var3) {
- var1.writeElem("group", -1);
- boolean var4 = var2.getChildConnection() == '|' && var2.getOccurance() == '*';
- var1.writeAttr("order", var2.getChildConnection() == ',' ? "seq" : (var4 ? "many" : "one"));
- if (!var4 && !var3 && var2.getOccurance() != 0) {
- var1.writeAttr("minOccurs", this.getMinOccurs(var2));
- var1.writeAttr("maxOccurs", this.getMaxOccurs(var2));
- }
- }
-
- ContentModelTermEnum var6 = var2.getTerms(true);
-
- while(var6.hasMoreElements()) {
- ContentModelTerm var5 = (ContentModelTerm)var6.nextElement();
- this.writeModel(var1, var5, false);
- }
-
- if (!var3) {
- var1.flush("group");
- }
- } else {
- var1.writeElem("element", true);
- var1.writeAttr("type", this.this$0.getQName(var2.getTerm(), Class.forName("com.extensibility.xml.ElementDeclaration")));
- if (var2.getOccurance() != 0) {
- var1.writeAttr("minOccurs", this.getMinOccurs(var2));
- var1.writeAttr("maxOccurs", this.getMaxOccurs(var2));
- }
-
- this.writeCPMetaProps(var1, var2.getTerm());
- }
-
- }
- }
-